Applications often use volatile memory to operate efficiently. During operation, data is read from mechanical disk into memory and potentially also written back to mechanical disk in discretely sized components called “pages”. A buffer pool is memory used to cache blocks of memory (such as pages) as the blocks are being read from mechanical disk, or being modified in memory. The buffer pool improves performance by allowing data to be accessed from memory instead of from mechanical disk. As an example only, databases often use buffer pools in order to manage and index pages in memory.
As a system operates, the system will randomly access a working set of pages. Over time, as the system operates, that working page set will change, which often also leads to a change in size of the working page set. If the working page set is larger than the available buffer pool in the random access memory (RAM), then the system performs more random access operations from mechanical disk.
A mechanical disk is structured with a mechanical rotational magnetic media in which a disk head sweeps a magnetic platter to read and access data. Sequential read/writes are more efficient because they do not involve a mechanical sweep of the disk head, but merely involve the electronic transmission delay from the disk head and controller circuitry to memory. Thus, mechanical disk operations are much more efficiently used for sequential operations, while random access operations to mechanical disk can significantly reduce system performance. As the working page set becomes larger than the buffer pool, and thus pages have to be moved out of the buffer pool and written to disk using random access operations. Accordingly, as the working set becomes larger than the buffer pool, system performance degrades.